package com.atguigu.singleton.type1;

/**
 * 单例模式
 * 饿汉式（静态变量）
 *
 * @author tielei
 * @date 2021-11-17 22:03
 */
public class SingletonTest01 {
    public static void main(String[] args) {
        Singleton instance = Singleton.getInstance();
        Singleton instance1 = Singleton.getInstance();
        System.out.println(instance == instance1);
        System.out.println(instance.hashCode() == instance1.hashCode());
    }
}

//饿汉式（静态变量）

/**
 * 优点：写法简单，在类的装载时就完成实例化。避免了线程同步的问题。
 * 缺点：在类的装载时就完成实例化，没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例，则会造成内存浪费。
 */
class Singleton {
    //私有化构造器，外部不能new
    private Singleton() {}
    //本类内部提供实例对象
    private final static Singleton instance = new Singleton();
    //提供公有的静态方法，返回实例对象
    public static Singleton getInstance() {
        return instance;
    }
}
